/**
 * Copyright (c) 2007,中企动力华南研发中心<br>
 * All rights reserved.
 */
package com.ce.pms.charge.service;
import java.util.List;

import com.ce.pms.base.service.IPmsBaseService;
import com.ce.pms.charge.model.BusinessCodeDomain;
import com.ce.pms.charge.vo.BusinessCodeVO;
import com.sitechasia.webx.core.support.Page;

/**
 * 功能描述：银行托收业务类,主要业务有银行出盘、回盘<br>
 * @author 罗军林 创建日期：2008-7-31
 */
public interface IBusinessCodeService extends IPmsBaseService{
	/**
	 * 功能描述:增加一个交易码<br>
	 * 必填项：交易码、描述、交易类型，当交易类型为支付类型时，支持方式必填<br>
	 * @param businessCodeVO
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-7-31<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public BusinessCodeVO addBusinessCode(BusinessCodeVO businessCodeVO);

	/**
	 * 功能描述:修改交易码<br>
	 * 必填项：交易码、描述、交易类型，当交易类型为支付类型时，支持方式必填<br>
	 * @param businessCodeVO
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-7-31<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public BusinessCodeVO editBusinessCode(BusinessCodeVO businessCodeVO);

	/**
	 * 功能描述:根据主键查询一个交易码记录<br>
	 * @param keyword
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-7-31<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public BusinessCodeVO findBusinessCodeByKeyword(Long keyword);
	
	/**
	 * 功能描述:查询交易码Domain  <br>
	 * @param businessId 交易码ID
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2009-1-6  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public BusinessCodeDomain getBusinessCodeDomainById(Long businessId);


	/**
	 * 功能描述:根据查询条件及分页信息查询交易码<br>
	 * @param condition
	 * @param pageNo
	 * @param pageSize
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-7-31<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public Page queryBusinessCode(BusinessCodeVO condition,int pageNo,int pageSize);

	/**
	 * 功能描述:根据主键删除一个交易码<br>
	 * @param keyword<br>
	 * Create author:罗军林<br>
	 * Create on:2008-7-31<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public void deleteBusinessCodeByKeyword(Long keyword);


	/***
	 * 功能描述:  获取所有可用的交易码(类型为收入类型且未被引用的)<br>
	 *  @param exceptId<br>
	 * @return
	 * Create author:yandawei <br>
	 * Create on:2008-8-5  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public List<BusinessCodeVO> getDebitNotUseBusinessCodeList(String exceptId);

	/**
	 * 功能描述:获取所有可用的交易码，包括收入类型和支付类型,如果code有值将模糊查询<br>
	 * @param code
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-8-6<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public List<BusinessCodeVO> getAllNotUseBusinessCodeList(String code);

	/**
	 * 功能描述:统计交易码的数量<br>
	 * @param condition
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-8-5<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public Long countBusinessCodeBizCode(BusinessCodeVO condition);


	/***
	 * 功能描述:  获取所有支付类型的交易码<br>
	 * @return
	 * Create author:yandawei <br>
	 * Create on:2008-9-8  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public List<BusinessCodeVO> getAllCreditBusinessCodeList();
	/**
	 * 功能描述: 获取所有收入类型的交易码<br>
	 * @return
	 * Create author:yixianjian <br>
	 * Create on:2008-12-30  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public List<BusinessCodeVO> getAllIncomeBusinessCode();
}
